//
//  DYCTabBarController.m
//  DYCBaisi
//
//  Created by Yachao on 17/6/29.
//  Copyright © 2017年 Yachao. All rights reserved.
//

#import "DYCTabBarController.h"
#import "DYCEssenceViewController.h"
#import "DYCNewViewController.h"
#import "DYCPublishViewController.h"
#import "DYCFriendTrendViewController.h"
#import "DYCMeViewController.h"
#import "DYCTabBar.h"
#import "DYCNavigationViewController.h"


@interface DYCTabBarController ()

@end

@implementation DYCTabBarController

/*
 问题:
 1.选中按钮的图片被渲染 -> iOS7之后默认tabBar上按钮图片都会被渲染 1.修改图片 2.通过代码 √
 2.选中按钮的标题颜色:黑色 标题字体大 -> 对应子控制器的tabBarItem √
 3.发布按钮显示不出来 分析:为什么其他图片可以显示,我的图片不能显示 => 发布按钮图片太大,导致显示不出来
 
        1.图片太大,系统帮你渲染 => 能显示 => 位置不对 => 高亮状态达不到
        解决:不能修改图片尺寸, 效果:让发布图片居中
 
        2.如何解决:系统的TabBar上按钮状态只有选中,没有高亮状态 => 中间发布按钮 不能用系统tabBarButton => 发布按钮 不是 tabBarController子控制器
 
            1.自定义tabBar
 */


// 只会调用一次
+ (void)load{
    // 获取当前类下面所有的UITabBarItem
    UITabBarItem *item = [UITabBarItem appearanceWhenContainedInInstancesOfClasses:@[self]];
    
    // 设置按钮选中标题的颜色:富文本:描述一个文字颜色,字体,阴影,空心,图文混排
    // 创建一个描述文本属性的字典
    NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
    attrs[NSForegroundColorAttributeName] = [UIColor blackColor];
    [item setTitleTextAttributes:attrs forState:UIControlStateSelected];
    
    // 设置字体尺寸:只有设置正常状态下,才会有效果
    NSMutableDictionary *attrsNor = [NSMutableDictionary dictionary];
    attrsNor[NSFontAttributeName] = [UIFont systemFontOfSize:13];
    [item setTitleTextAttributes:attrsNor forState:UIControlStateNormal];
}

//如何查找插件安装在哪？1.打开插件工程； 2.点击放大镜，搜索plug; 3.查看工程文件，install path
#pragma mark - 生命周期方法
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    // 1 添加子控制器(5个子控制器) -> 自定义控制器 -> 划分项目文件结构
    [self setupAllChildViewController];
    
    // 2 设置tabBar上按钮内容 -> 由对应的子控制器的tabBarItem属性
    [self setupAllTitleButton];
    
    //1.问题：选中图片被渲染  解决：1.直接操作图片 2.通过代码
    //2.选中文字颜色也不需要渲染  分析：1.按钮有谁决定  tabBarItem
    
    //3.发布按钮显示不出来，位置也不对，分析：1.有没有文字，图片的位置都固定， 2.加号额图片比其他图片大，因此就会超出tabBar 3.不想要超出，让加号的图片垂直居中 => 修改加号按钮位置 => tabBar上按钮位置由系统决定，我们自己不能决定 => 系统的tabBarButton没有提供高亮图片状态，因此做不了实例程序效果 => 加号，应该是普通按钮，高亮状态 =>发布控制器㐊tabBarController子控制器
    
    //4.最终方案：调整系统tabBar上按钮位置，平均分成5等分，在把加号按钮显示在中间就好了
    //调整系统自带矿建的子控件的位置 => 自定义tabBar =>使用tabBar
    
    
    //1.搞个占位子控制器，在对应按钮上想添加加号按钮，用UISwitch测试，UISwitch用不了，UISwitch被tabBarButton挡住了
//    UISwitch *switchV = [[UISwitch alloc] init];
//    switchV.center = CGPointMake(self.tabBar.bounds.size.width * 0.5, self.tabBar.bounds.size.height * 0.5);
//    [self.tabBar addSubview:switchV];
    
    // 3.自定义tabBar
    [self setupTabBar];
    
    // tabBar上按钮并不是在viewDidLoad添加的
}


#pragma mark - 自定义tabBar
- (void)setupTabBar{
    DYCTabBar *tabBar = [[DYCTabBar alloc] init];
    //Assignment to readonly property
//    self.tabBar = tabBar;
    [self setValue:tabBar forKey:@"tabBar"];
    
    
}

#pragma mark - 添加所有子控制器
- (void)setupAllChildViewController
{
    // 精华
    DYCEssenceViewController *essenceVC = [[DYCEssenceViewController alloc] init];
    DYCNavigationViewController *essenceNav = [[DYCNavigationViewController alloc] initWithRootViewController:essenceVC];
    // initWithRootViewController:push
    [self addChildViewController:essenceNav];

    // 新帖
    DYCNewViewController *newVC = [[DYCNewViewController alloc] init];
    DYCNavigationViewController *newNav = [[DYCNavigationViewController alloc] initWithRootViewController:newVC];
    [self addChildViewController:newNav];
    
//    // 发布
//    DYCPublishViewController *publishVC = [[DYCPublishViewController alloc] init];
//    UINavigationController *publishNav = [[UINavigationController alloc] initWithRootViewController:publishVC];

    // 关注
    DYCFriendTrendViewController *friendTrendVC = [[DYCFriendTrendViewController alloc] init];
    DYCNavigationViewController *friendTrendNav = [[DYCNavigationViewController alloc] initWithRootViewController:friendTrendVC];
    [self addChildViewController:friendTrendNav];

    // 我
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:NSStringFromClass([DYCMeViewController class]) bundle:nil];
    // 加载箭头指向控制器
    DYCMeViewController *meVC = [storyboard instantiateInitialViewController];
    DYCNavigationViewController *meNav = [[DYCNavigationViewController alloc] initWithRootViewController:meVC];
    [self addChildViewController:meNav];
}

/*
 1.改插件 -> 如何去查找插件 -> 插件开发知识 -> 插件代码肯定有个地方指定安装在什么地方
 1.打开插件 2.搜索plug 3.就能找到安装路径
 
 */

// 设置tabBar上所有按钮内容
- (void)setupAllTitleButton
{
    // 0:nav
    UINavigationController *nav = self.childViewControllers[0];
    nav.tabBarItem.title = @"精华";
    
    nav.tabBarItem.image = [UIImage imageNamed:@"tabBar_essence_icon"];
    // 快速生成一个没有渲染图片
    nav.tabBarItem.selectedImage = [UIImage imageOriginalWithName:@"tabBar_essence_click_icon"];
    
    // 1:新帖
    UINavigationController *nav1 = self.childViewControllers[1];
    nav1.tabBarItem.title = @"新帖";
    nav1.tabBarItem.image = [UIImage imageNamed:@"tabBar_new_icon"];
    nav1.tabBarItem.selectedImage = [UIImage imageOriginalWithName:@"tabBar_new_click_icon"];
    
//    // 2:发布
//    DYCPublishViewController *publishVc = self.childViewControllers[2];
//    publishVc.tabBarItem.image = [UIImage imageOriginalWithName:@"tabBar_publish_icon"];
//    publishVc.tabBarItem.selectedImage = [UIImage imageOriginalWithName:@"tabBar_publish_click_icon"];
//    // 设置图片位置
//    publishVc.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
    
    
    
    // 3.关注
    UINavigationController *nav3 = self.childViewControllers[2];
    nav3.tabBarItem.title = @"关注";
    nav3.tabBarItem.image = [UIImage imageNamed:@"tabBar_friendTrends_icon"];
    nav3.tabBarItem.selectedImage = [UIImage imageOriginalWithName:@"tabBar_friendTrends_click_icon"];
    
    // 4.我
    UINavigationController *nav4 = self.childViewControllers[3];
    nav4.tabBarItem.title = @"我";
    nav4.tabBarItem.image = [UIImage imageNamed:@"tabBar_me_icon"];
    nav4.tabBarItem.selectedImage = [UIImage imageOriginalWithName:@"tabBar_me_click_icon"];
    
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end
